
package com.joysuch.wwyt.datasync.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.joysuch.wwyt.datasync.DataSyncType;
import com.joysuch.wwyt.datasync.service.DataSyncProcessor;
import com.joysuch.wwyt.datasync.service.QueryObjectsBySqlDataSyncProcessor;

/**
 * 对于默写不符合jpa规范或者自定义sql语句的方法，或者特别复杂的场合，需要添加此注解，自定义同步数据处理规则
 * 
 * @date 2021年1月15日 下午5:17:28
 * @since
 *
 */
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface DataSync {

    /**
     * 修改类型
     * 
     */
    DataSyncType type() default DataSyncType.UPDATE;

    /**
     * 是否sql语句查询
     */
    boolean nativeQuery() default false;

    /**
     * 根据输入参数修改对象的语句
     * 
     * @return
     */
    String selectSql() default "";

    /**
     * 配置selectSql()语句中用到的参数顺序, 不配置默认selectSql参数数量、位置和调用方法一致
     * 
     */
    int[] argsIndex() default { -1 };

    /**
     * 自定义处理器
     * 
     */
    Class<? extends DataSyncProcessor> processor() default QueryObjectsBySqlDataSyncProcessor.class;// default

}
